package jukebox.model.playlist;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;

/**
 * @author : 김준섭
 * @since : 2014-07-01
 * @comment : 플레이리스트의 음악리스트를 처리하기위한 영속성 클래스 
 */
@Repository
public class MusicListDAOImpl implements MusicListDAO {
	@Resource(name="sqlSessionTemplate")
	private SqlSessionTemplate sqlSessionTemplate;
	
	/**
	 * @method : getMusicList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : int playListId - 조회할 플레이리스트 번호
	 * @return : List - 조회한 뮤직리스트 정보
	 * @comment : 플레이리스트의 뮤직리스트를 조회한다. 
	 */
	@Override
	public List getMusicList(int playListId) {
		return sqlSessionTemplate.selectList("playlist.getMusicList", playListId);
	}

	/**
	 * @method : addMusicList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : Map<String, Integer> map - PLAYLIST_NO : 플레이리스트 번호, MUSICBOARD_NO : 음악게시물 번호
	 * @return : void
	 * @comment : 플레이리스트의 뮤직리스트에 음악을 등록한다.
	 */
	@Override
	public void addMusicList(Map<String, Integer> map) throws Exception{
		try{
			sqlSessionTemplate.insert("playlist.addMusicList", map);
		}catch(Exception e){
			throw e;
		}
	}

	/**
	 * @method : removeMusicList
	 * @author : 김준섭
	 * @since : 2014-07-01
	 * @param : int musicListNo - 뮤직리스트 번호
	 * @return : void
	 * @comment : 플레이리스트의 뮤직리스트에 음악을 삭제한다.
	 */
	@Override
	public void removeMusicList(int musicListNo) {
		sqlSessionTemplate.delete("playlist.removeMusicList", musicListNo);
	}
}
